home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 2002 #11 / Amiga Plus CD - 2002 - No. 11.iso / Tools / Development / Feelin021015 / Libs / Feelin / fcclib.a < prev    next >
Text File  |  2002-10-28  |  3KB  |  136 lines

  1.          INCLUDE 'exec/initializers.i'
  2.          INCLUDE 'exec/libraries.i'
  3.          INCLUDE 'exec/resident.i'
  4.          INCLUDE 'exec/alerts.i'
  5.  
  6.          INCLUDE 'exec.i'
  7.  
  8.          xref      FCC_VERSION
  9.          xref      FCC_REVISION
  10.          xref      _FCC_Name
  11.          xref      _FCC_ID
  12.          xref      _FCC_Info
  13.          xdef      ___base
  14.  
  15.          SECTION   'text',CODE
  16.  
  17. ;;Library Info
  18.          STRUCTURE   FCCBase,LIB_SIZE
  19.             UBYTE    fcc_Flags
  20.             UBYTE    fcc_Reserved
  21.             ULONG    fcc_Seglist
  22.             APTR     fcc_SysBase
  23.          LABEL       FCCBase_SIZE
  24.  
  25.          MOVEQ     #-1,D0
  26.          RTS
  27.  
  28. RomTag   Dc.w  RTC_MATCHWORD           ; UWORD RT_MATCHWORD
  29.          Dc.l  RomTag                  ; APTR  RT_MATCHTAG
  30.          Dc.l  EndCode                 ; APTR  RT_ENDSKIP
  31.          Dc.b  RTF_AUTOINIT            ; UBYTE RT_FLAGS
  32.          Dc.b  FCC_VERSION             ; UBYTE RT_VERSION  (defined in sample_rev.i)
  33.          Dc.b  NT_LIBRARY              ; UBYTE RT_TYPE
  34.          Dc.b  0                       ; BYTE  RT_PRI
  35.          Dc.l  _FCC_Name               ; APTR  RT_NAME
  36.          Dc.l  _FCC_ID                 ; APTR  RT_IDSTRING
  37.          Dc.l  InitTable               ; APTR  RT_INIT  table for InitResident()
  38.  
  39. EndCode:
  40.  
  41.          Even
  42.  
  43. InitTable          Dc.l FCCBase_SIZE
  44.                    Dc.l FuncTable
  45.                    Dc.l DataTable
  46.                    Dc.l LibInit
  47.  
  48. DataTable
  49.          INITBYTE  LN_TYPE,NT_LIBRARY
  50.          INITLONG  LN_NAME,_FCC_Name
  51.          INITBYTE  LIB_FLAGS,LIBF_SUMUSED!LIBF_CHANGED
  52.          INITWORD  LIB_VERSION,FCC_VERSION
  53.          INITWORD  LIB_REVISION,FCC_REVISION
  54.          INITLONG  LIB_IDSTRING,_FCC_ID
  55.          Dc.l      0
  56. ;*
  57. ;;Library Table
  58. FuncTable
  59.          Dc.l  LibOpen
  60.          Dc.l  LibClose
  61.          Dc.l  LibExpunge
  62.          Dc.l  LibNull
  63.  
  64.          Dc.l  _FCC_Info
  65.  
  66.          Dc.l  -1
  67. ;*
  68.  
  69. ;;LibInit                              (FCCBase,Seglist,ExecBase)(d0,a0,a6)
  70. LibInit:
  71.          MOVE.L    a5,-(sp)
  72.          MOVEA.L   d0,a5               ; a5 = FCCBase
  73.          MOVE.L    a0,(fcc_Seglist,a5)
  74.          MOVE.L    a6,(fcc_SysBase,a5)
  75.          MOVE.L    a5,d0
  76.          MOVEA.L   (sp)+,a5
  77.          RTS
  78. ;*
  79. ;;LibOpen                              (FCCBase,Version)(a6,d0)
  80. LibOpen:
  81.          ADDQ.W    #1,(LIB_OPENCNT,a6)
  82.          BCLR      #LIBB_DELEXP,(fcc_Flags,a6)
  83.          MOVE.L    a6,d0
  84.          RTS
  85. ;*
  86. ;;LibClose                             (FCCBase)(a6)
  87. LibClose:
  88.          MOVEQ     #0,d0
  89.          SUBQ.W    #1,(LIB_OPENCNT,a6)
  90.          BNE.B     1$
  91.          BTST      #LIBB_DELEXP,(fcc_Flags,a6)
  92.          BEQ.B     1$
  93.  
  94.          BSR       LibExpunge
  95. 1$       RTS
  96. ;*
  97. ;;LibExpunge                           (FCCBase)(a6)
  98. LibExpunge:
  99.          MOVEM.L   d2/a5-a6,-(sp)
  100.          MOVEA.L   a6,a5
  101.          MOVEA.L   (fcc_SysBase,a5),a6
  102.  
  103.          TST.W     (LIB_OPENCNT,a5)
  104.          BEQ.B     1$
  105.  
  106.          BSET      #LIBB_DELEXP,(fcc_Flags,a5)
  107.          MOVEQ     #0,d0
  108.          BRA.B     .end
  109.  
  110. 1$       MOVE.L    (fcc_Seglist,a5),d2
  111.          MOVEA.L   a5,a1
  112.          Call      Remove
  113.  
  114.          MOVEQ     #0,d0
  115.          MOVEA.L   a5,a1
  116.          MOVE.W    (LIB_NEGSIZE,a5),d0
  117.          SUBA.L    d0,a1
  118.          ADD.W     (LIB_POSSIZE,a5),d0
  119.          Call      FreeMem
  120.  
  121.          MOVE.L    d2,d0
  122. .end     MOVEM.L   (sp)+,d2/a5-a6
  123.          RTS
  124. ;*
  125. ;;LibNull
  126. LibNull:
  127.          MOVEQ     #0,d0
  128.          RTS
  129. ;*
  130.  
  131.          SECTION   '__MERGED',DATA
  132.  
  133. ___base  Dc.l      0
  134.  
  135.          END
  136.